import ACCESS_ENUM from "@/access/accessEnum";

/**
 * 检查用户访问权限（检查当前用户是否有访问权限）
 * @param loginUser 当前登录用户
 * @param needAccess    需要具有的权限
 * @return boolean  有无权限
 */
const checkAccess = (
  loginUser: API.LoginUserVO,
  needAccess = ACCESS_ENUM.NOT_LOGIN,
) => {
  //   获取当前登录用户具有的权限（如果没有登录，就默认没有权限）
  const loginUserAccess = loginUser?.userRole ?? ACCESS_ENUM.NOT_LOGIN;

  if (needAccess === ACCESS_ENUM.NOT_LOGIN) {
    //   如果需要访问权限为 NOT_LOGIN，则表示不需要登录即可访问，直接返回 true
    return true;
  }
  if (needAccess === ACCESS_ENUM.USER) {
    //   如果需要访问权限为 USER，则表示需要登录即可访问，直接返回 true
    if (loginUserAccess === ACCESS_ENUM.NOT_LOGIN) {
      return false;
    }
  }
  //   如果需要访问权限为 ADMIN，则表示需要管理员权限才能访问，判断当前登录用户是否具有管理员权限
  if (needAccess === ACCESS_ENUM.ADMIN) {
    if (loginUserAccess !== ACCESS_ENUM.ADMIN) {
      return false;
    }
  }
  return true;
};

export default checkAccess;
